#!/usr/bin/python

from stoplist import *
from agente import *
from math import *
from vectorial import *

def buscarSimilares(idDoc):
	StopList()
	cargarAnalizador(open(Agente().get_Documento(idDoc)[0][2]).read())
	palabras = []
	pesos = []
	while True:
		tok = obtenerToken()
		if not tok: break
		if tok.type == 'PALABRA' and tok.value not in palabras:
			palabras.append(tok.value.lower())
	pesos = calcularPesos(palabras, idDoc)
	texto = list2text(palabras,pesos)
	return texto

def calcularPesos(palabras, idDoc):
	pesos = []
	numDoc = Agente().countDoc()
	for i in range(0,len(palabras)):
		pesos.append(calcularPeso(palabras[i], idDoc, numDoc))
	return pesos

def calcularPeso(palabra, idDoc, numDoc):
	ter = Agente().getTermino(palabra)
	if ter:
		fdj = ter[0][2]
		ftij = Agente().getFrecuenciaTerminoDoc(ter[0][0],idDoc)
	else:
		fdj = 0
		ftij = 0
	if fdj != 0:
		fidj = log10(numDoc/float(fdj))
	else:
		fidj = 0
	wij = ftij * fidj
	return wij

def list2text(palabras, pesos):
	texto = ""
	for i in range(0,len(palabras)):
		texto = texto + str(palabras[i]) + " " + str(pesos[i]) + " "
	return texto 


